package drg_group.wuxi_2022.MDC;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import drg_group.wuxi_2022.Base;
import drg_group.wuxi_2022.MedicalRecord;
import drg_group.wuxi_2022.ADRG.*;

public class MDCH{
    public static String group(MedicalRecord record){
        String[] mdc_zd={"B17.202","K71.100x005","K76.700","K83.800x012","S36.111","K85.202","K72.005","K83.817","K76.500x002","K82.200x002","D13.401","C78.800x009","Q44.003","K71.100x003","I87.803","K76.500x001","B17.801","K70.305+I98.3*","Q27.304","B17.103","K83.004","K83.200x001","K82.305","B65.903+K77.0*","K70.402","K76.800x007","K80.500x001","K75.000","Q45.001","T86.804","K91.825","K83.017","K83.810","S36.100x011","E80.603","B15.001","K81.003","K76.001","K82.304","K83.000x012","K80.405","B18.000","K74.400","K81.900x001","K91.800x402","K72.002","E84.901","K83.807","C23.x00","K71.200x001","B45.800x001","C22.400","K75.002","R93.205","B16.100","K76.800x026","K80.500x002","B17.800x003","K72.004","A50.000x002+K77.0*","K74.604","K83.808","C24.004","K83.100","Q44.100x002","K85.821","K71.100","B16.001","K75.803","K83.811","K82.306","B25.101+K77.0*","K80.402","K86.105","T86.400x018","K82.806","Q44.600","D37.605","B54.x00","K74.619+I98.2*","K75.800x006","T86.400x013","Q44.503","K86.814","K91.822","B17.904","K86.106","K85.800x001","K75.800x001","T81.800x006","K75.901","B15.000","A18.814+K77.0*","S36.100x081","S36.200x021","K73.800x001","B17.903","K74.200","K80.507","R17.900","B67.800x001+K77.0*","I87.108","K75.200","K85.002","D13.400","K80.304","K75.300x001","K81.001","K86.000","K86.803","B17.800x002","D37.603","K85.807","K82.302","R16.200x001","R93.204","T86.400x011","K80.502","K83.000","K83.901","B16.203","K85.900x003","B44.803","Q27.804","E80.400","S36.101","E80.501","B16.200","B15.903","B16.100x002","K71.601","K74.600x042","Q27.805","T86.400x012","B19.001","A18.817+K87.1*","K80.201","K76.401","I82.001","K85.815","D37.706","K83.800x009","K76.817","K85.201","K85.902","M32.108+K77.8*","K81.004","C22.200","B17.900x006","K74.300x008+I98.3*","S36.100x001","K80.403","K76.800x003","K86.104","K86.807","K72.900x001","K74.603","Q85.912","K82.800x009","K82.000","K76.102","K82.800x002","K74.611","C78.808","A06.400+K77.0*","K83.009","K74.600x027","Q44.301","S36.100x041","B17.203","K83.400x001","R17.900x001","K85.818","K70.401","D37.600x004","D37.600x003","K71.600","B18.200","Q44.004","A18.816+K87.0*","B16.100x003","K71.700","K74.615+I98.3*","K70.300","K76.700x003","K76.808","Q44.102","C24.000","B18.107","B18.800x005","C78.806","K83.105","T85.800x802","K80.800x001","K75.000x003","Q45.003","M35.003+K77.8*","K85.816","E80.601","K71.103","K83.100x008","K91.841","K76.806","B18.902","K70.900","K75.805","C22.301","K82.808","K71.100x006","E83.102","K86.100x001","T86.400x016","K75.003","C25.801","K81.000","K75.804","B17.900x004","K74.300x007+I98.2*","T86.401","K70.303+I98.2*","K85.817","B15.902","D01.503","K71.102","K76.805","K76.801","K80.000x002","K73.901","K83.301","R93.200x001","K72.900x003+G94.3*","B16.903","A18.301","B17.803","B66.301","C22.100","K76.810","K75.806","K76.800x021","Q44.201","K83.107","K85.801","K85.302","K85.808","K82.801","K72.000x004","B17.200x005","C25.800x001","K71.800","K76.819","K82.101","Q44.504","K76.804","K81.008","K76.600x007","K83.802","T86.400x014","I77.100x011","B18.801","K80.300x002","S36.110","T86.800x021","K92.800x012","K83.100x001","K92.800x009","B17.200x004","B54.x00x003+K77.0*","K76.000","B16.201","K83.001","K76.800x015","K80.300x005","K76.900x002","Q45.002","K74.302+I98.3*","K76.809","C25.000","K74.606","K83.815","B18.104","D01.501","B65.202+K77.0*","K65.007","K86.812","K85.301","B18.100","A51.400x008+K77.0*","S36.103","D37.600x001","S36.210","K76.400","K83.306","D01.500x001","B25.100+K77.0*","S36.200x011","S36.100x013","K83.805","K82.900x001","R16.000x001","B18.800x003","C24.002","B18.903","K76.601","B17.100","K86.804","K74.600x002","K70.201","K83.011","K83.809","Q44.400","K80.505","Q45.100","K85.901","K71.901","K80.506","Q45.300x902","K74.600x025","K76.700x001","C78.700","K70.306+I98.3*","E80.602","K74.605","B67.000x001+K77.0*","I86.808","K83.000x007","K83.015","K82.400","B17.205","D13.501","K83.101","B26.300+K87.1*","I82.000x001","S36.200x092","E80.500","K83.803","B18.201","C22.001","B16.905","T86.400x004","D13.600","E80.600x008","K80.002","Q44.701","K82.301","K71.300x001","Q44.101","K86.107","B18.002","K91.807","K71.000x002","S36.200x001","K76.602","K73.000x001","K83.800x023","S36.113","K76.803","K71.101","K72.902","K80.400","S36.202","K71.400x001","B17.800x001","D13.500x001","Q45.300x904","K70.001","K74.600","K86.818","D13.500x003","K86.805","K86.813","E80.600x007","K85.813","K76.800x027","K80.406","B67.500x001+K77.0*","K91.826","B17.000","K92.800x010","C24.800x001","K70.000","D13.500","K74.300x005+I98.2*","K80.000x004","T86.400x006","K85.300","C22.000","I74.804","I81.x00","K91.800x407","B18.200x009","B18.800x004","K91.840","K74.612","T86.400x015","A52.705+K77.0*","B15.003","K82.805","C77.203","K86.800x001","D13.700x001","R93.201","K85.000","K74.613","K74.300","K76.101","K83.012","R93.203","B18.802","K86.100x004","T86.400x017","K86.815","K81.005","S36.112","K70.100","B16.000x001","K85.101","B19.901","Q44.505","K85.900","K74.601","K83.018","K85.803","D01.701","B17.204","B18.804","N82.201","K85.814","K74.620+I98.2*","K70.304+I98.2*","K81.006","K83.501","K83.302","C25.200","B65.900x010+K77.0*","B19.900","K83.814","I74.800x016","B15.900","B18.003","B15.002","K86.810","B16.000","K82.800x004","K70.400x002","K83.819","C24.900","D37.700x003","Q44.601","R93.302","K80.504","K74.600x003","D01.700","D13.701","K71.600x002","B19.002","S36.201","C25.100","B58.100+K77.0*","A52.700x007+K77.0*","B65.906+I98.3*","C25.802","K83.902","C22.300","K75.100","Q45.301","Q45.300x901","C25.803","B16.902","K81.000x008","K83.804","D37.602","K71.702","K76.600x002","B65.904+I98.2*","K83.816","B18.001","K91.823","B19.000","K74.000","A01.001+K77.0*","K75.001","K83.014","B18.800x001","K74.600x021","S36.100x051","K71.002","K72.001","K76.818","Q44.502","C25.701","K85.900x002","S36.200x031","K76.901","K74.618+I98.3*","K74.600x041","Q44.703","K72.003","E80.600x006","C24.101","Q44.700x004","K80.801","K91.800x411","K71.001","K83.019","B17.900x002","K70.901","K83.005","K71.500x002","T86.400x010","B26.802+K77.0*","D37.600x002","K83.106","K82.802","Q44.704","R94.500","R93.200x002","S36.200x091","T86.400x009","D18.013","B16.101","K80.303","K80.001","K80.302","K85.822","K82.900x002","K83.307","B17.102","D37.604","B25.200+K87.1*","C24.000x007","K86.100x002","K83.813","K75.300","C45.704","K71.902+I98.2*","B65.900x004+K77.0*","K85.800x002","B16.202","D37.705","K91.806","K86.200","K83.109","K85.001","Q44.200","B16.901","B18.202","K86.103","T86.400x003","K76.813","K74.500","I86.809","K83.305","K86.300","K86.800x013","K86.808","B18.803","C77.204","K83.108","Q44.702","B18.204","K75.401","K91.800x403","K83.820","K85.800x003","B18.805","I87.109","C22.900","D01.502","I77.000x017","C25.300","K86.102","K76.603","K76.800x009","K70.302+I98.3*","Q85.900x019","K83.016","K86.901","K83.303","K80.100x001","D18.000x031","Q85.900x044","K71.104","I81.x00x003","B18.004","K76.814","K76.500","K76.800x023","B16.904","C25.401","K74.600x030","K83.300","A18.815+K87.0*","Q44.500x005","Q27.800x004","E85.415+K77.8*","I72.800x072","K74.100","K75.400","K74.616+I98.2*","Q44.200x003","K82.300","K76.811","Q44.705","K80.200x001","K71.100x007","K80.404","B16.204","T86.400x005","K86.800x002","K81.100","K74.610","B00.803+K77.0*","B15.905","C25.400","K83.007","K91.800x401","K85.200","K86.816","S36.100x021","B17.902","B18.105","K91.800x304","K81.801","K75.000x002","K83.102","D37.601","B17.100x006","B17.200","K82.200","K86.101","Q44.300","B15.901","K70.301+I98.2*","K72.000x013","B18.203","B18.900x006","K91.800x301","R17.901","K82.001","K92.801","T86.400x001","D17.700x015","K83.502","Q44.501","N82.302","Q44.700x003","K80.400x004","K74.600x010","C24.001","K74.600x029","K83.104","K81.002","K74.607","K81.101","E80.600x005","K86.802","K86.811","K85.809","K71.701","B18.901","K83.008","K86.806","Q44.500x006","T82.813","Q44.001","K76.800x022","C22.700","K91.500","C24.100","K74.602","K74.600x034","S36.102","K70.403","B17.900","K80.202","C78.807","K86.800x015","S36.200","I74.803","K76.807","K83.818","T86.400x007","C22.101","K85.802","Z52.600x001","K74.617+I98.3*","K81.007","K80.401","I87.121","B05.800x003+K77.0*","K74.301+I98.2*","Q44.002","K83.401","K72.904","K76.816","K80.203","K80.301","K82.803","K80.501","K76.800x006","B18.106","K86.801","K82.100x002","K80.503","C24.003","B18.900","K71.903+I98.3*","K76.815","K75.810","K82.000x003","B00.802+K77.0*","K71.500x001","S36.100x031","K76.200","Q45.200","K85.102","K92.800x006","B17.900x005","K83.006","K83.010","K80.306","K91.827","K71.100x008","K82.804","K74.608","Q44.500x007","Q44.100x003","B18.100x007","K74.614","K80.200x003","K80.305","Q45.802","K74.600x036","K86.809","K81.900","B18.800x002","C24.800","K76.600x006","K83.304","K74.300x006+I98.3*","K83.013","I72.809","K82.303","K74.600x031","Q44.700x002","K71.900x003","K86.817","C25.900","K76.300","K72.100","K73.200x002","K83.103","B66.100x001+K77.0*","K73.900","B17.100x003","K83.800x022","K73.801","Q85.911","K75.801","K85.100","K73.100","K80.101","K82.807","B17.101","K72.000x005","K71.900","B16.100x004"};
        String[] dept_list={};
        if (!(true && Base.contains(mdc_zd,record.zdList[0]))){
            return "";
        }
        
        Base.groupMessages.putMessage(record.Index,"符合MDCH入组条件，匹配规则：主诊断匹配");
        String result;

        result=HB1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC3.group(record);
        if (result.length()>0){
            return result;
        }

        result=HJ1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HK1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HL1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HL2.group(record);
        if (result.length()>0){
            return result;
        }

        if (record.ssList!=null && record.ssList.length>0  && Base.intersect(Base.SS_VALID,record.ssList)){
            Base.groupMessages.putMessage(record.Index,"符合HQY入组条件，存在有效手术操作："+String.join(",",Base.Intersect(record.ssList,Base.SS_VALID)));
            return "HQY";
        }

        result=HR1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS3.group(record);
        if (result.length()>0){
            return result;
        }

        result=HT1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HT2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HU1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ3.group(record);
        if (result.length()>0){
            return result;
        }

        Base.groupMessages.putMessage(record.Index,"不符合MDCH的ADRG入组条件");
        return "";
    }
}

